4 Javascript Sample
1 Add fireworks int form
//Fireworks
(function webpackUniversalModuleDefinition(root, factory) {
if (typeof exports === 'object' && typeof module === 'object') module.exports = factory();
else if (typeof define === 'function' && define.amd) define([], factory);
else if (typeof exports === 'object') exports["EFFECT"] = factory();
else root["EFFECT"] = factory()
})(this,function() {
return (function(modules) {
var installedModules = {};
function __webpack_require__(moduleId) {
if (installedModules[moduleId]) return installedModules[moduleId].exports;
var module = installedModules[moduleId] = {
exports: {},
id: moduleId,
loaded: false
};
modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
module.loaded = true;
return module.exports
}
__webpack_require__.m = modules;
__webpack_require__.c = installedModules;
__webpack_require__.p = "";
return __webpack_require__(0)
})([function(module, exports, __webpack_require__) {
'use strict';
var canvas = document.createElement('canvas');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
canvas.style.cssText = 'position:fixed;top:0;left:0;pointer-events:none;z-index:999999';
window.addEventListener('resize',
function() {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight
});
document.body.appendChild(canvas);
var context = canvas.getContext('2d');
var particles = [];
var particlePointer = 0;
EFFECT.shake = true;
function getRandom(min, max) {
return Math.random() * (max - min) + min
}
function getColor(el) {
if (EFFECT.colorful) {
var u = getRandom(0, 360);
return 'hsla(' + getRandom(u - 10, u + 10) + ', 100%, ' + getRandom(50, 80) + '%, ' + 1 + ')'
} else {
return window.getComputedStyle(el).color
}
}
function getCaret() {
var el = document.activeElement;
var bcr;
if (el.tagName === 'TEXTAREA' || (el.tagName === 'INPUT' && el.getAttribute('type') === 'text')) {
var offset = __webpack_require__(1)(el, el.selectionStart);
bcr = el.getBoundingClientRect();
return {
x: offset.left + bcr.left,
y: offset.top + bcr.top,
color: getColor(el)
}
}
var selection = window.getSelection();
if (selection.rangeCount) {
var range = selection.getRangeAt(0);
var startNode = range.startContainer;
if (startNode.nodeType === document.TEXT_NODE) {
startNode = startNode.parentNode
}
bcr = range.getBoundingClientRect();
return {
x: bcr.left,
y: bcr.top,
color: getColor(startNode)
}
}
return {
x: 0,
y: 0,
color: 'transparent'
}
}
function createParticle(x, y, color) {
return {
x: x,
y: y,
alpha: 1,
color: color,
velocity: {
x: -1 + Math.random() * 2,
y: -3.5 + Math.random() * 2
}
}
}
function EFFECT() {
{
var caret = getCaret();
var numParticles = 5 + Math.round(Math.random() * 10);
while (numParticles--) {
particles[particlePointer] = createParticle(caret.x, caret.y, caret.color);
particlePointer = (particlePointer + 1) % 500
}
} {
if (EFFECT.shake) {
var intensity = 1 + 2 * Math.random();
var x = intensity * (Math.random() > 0.5 ? -1 : 1);
var y = intensity * (Math.random() > 0.5 ? -1 : 1);
document.body.style.marginLeft = x + 'px';
document.body.style.marginTop = y + 'px';
setTimeout(function() {
document.body.style.marginLeft = '';
document.body.style.marginTop = ''
},
75)
}
}
};
EFFECT.colorful = false;
function loop() {
requestAnimationFrame(loop);
context.clearRect(0, 0, canvas.width, canvas.height);
for (var i = 0; i < particles.length; ++i)
{
var particle = particles[i];
if (particle.alpha <= 0.1) continue;
particle.velocity.y += 0.075;
particle.x += particle.velocity.x;
particle.y += particle.velocity.y;
particle.alpha *= 0.96;
context.globalAlpha = particle.alpha;
context.fillStyle = particle.color;
context.fillRect(Math.round(particle.x - 1.5), Math.round(particle.y - 1.5), 3, 3);
}
//context.fillText("文字",particle.x,particle.y) //太频繁,文字会卡死固定位置
}
requestAnimationFrame(loop);
module.exports = EFFECT
},
function(module, exports) {
(function() {
var properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX', 'overflowY', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth', 'borderStyle', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch', 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily', 'textAlign', 'textTransform', 'textIndent', 'textDecoration', 'letterSpacing', 'wordSpacing', 'tabSize', 'MozTabSize'];
var isFirefox = window.mozInnerScreenX != null;
function getCaretCoordinates(element, position, options) {
var debug = options && options.debug || false;
if (debug) {
var el = document.querySelector('#input-textarea-caret-position-mirror-div');
if (el) {
el.parentNode.removeChild(el)
}
}
var div = document.createElement('div');
div.id = 'input-textarea-caret-position-mirror-div';
document.body.appendChild(div);
var style = div.style;
var computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle;
style.whiteSpace = 'pre-wrap';
if (element.nodeName !== 'INPUT') style.wordWrap = 'break-word';
style.position = 'absolute';
if (!debug) style.visibility = 'hidden';
properties.forEach(function(prop) {
style[prop] = computed[prop]
});
if (isFirefox) {
if (element.scrollHeight > parseInt(computed.height)) style.overflowY = 'scroll'
} else {
style.overflow = 'hidden'
}
div.textContent = element.value.substring(0, position);
if (element.nodeName === 'INPUT') div.textContent = div.textContent.replace(/\s/g, "\u00a0");
var span = document.createElement('span');
span.textContent = element.value.substring(position) || '.';
div.appendChild(span);
var coordinates = {
top: span.offsetTop + parseInt(computed['borderTopWidth']),
left: span.offsetLeft + parseInt(computed['borderLeftWidth'])
};
if (debug) {
span.style.backgroundColor = '#aaa'
} else {
document.body.removeChild(div)
}
return coordinates
}
if (typeof module != "undefined" && typeof module.exports != "undefined") {
module.exports = getCaretCoordinates
} else {
window.getCaretCoordinates = getCaretCoordinates
}
} ())
}])
});
EFFECT.colorful = true;
EFFECT.shake = true;
document.body.addEventListener('input', EFFECT);
2 Form vote
//Get main table field id
var fieldid1 = WfForm.convertFieldNameToId("bfb");//percentage
var fieldid2 = WfForm.convertFieldNameToId("fjqry");//Disagree person
var fieldid3 = WfForm.convertFieldNameToId("lztj");//Condition
var fieldid6 = WfForm.convertFieldNameToId("mxbh");//Detail table
var mx=WfForm.getFieldValue(fieldid6);;//Details table field it
var fieldid4 = WfForm.convertFieldNameToId("tpr", "detail_"+mx);//Vote person
var fieldid5 = WfForm.convertFieldNameToId("yj", "detail_"+mx);//Comments
var userid=WfForm.getBaseInfo().f_weaver_belongto_userid;
//WfForm.controlDetailRowDisplay("detail_"+mx, "all", true);
setTimeout(function(){
$(".vote").show()
},1000);
//Check all detail table, hide non-current user's line
var rowArr1 = WfForm.getDetailAllRowIndexStr("detail_"+mx).split(",");
for(var i=0; i<rowArr1.length; i++){
var rowIndex1 = rowArr1[i];
if(rowIndex1 !== ""){
var fieldvalue4=WfForm.getFieldValue(fieldid4+"_"+rowIndex1);//Get vote person's value
if(userid!=fieldvalue4){
WfForm.controlDetailRowDisplay("detail_"+mx, rowIndex1, true);
}else{
WfForm.controlDetailRowDisplay("detail_"+mx, rowIndex1, false);
WfForm.changeFieldAttr(fieldid5+"_"+rowIndex1, 3);//Change vote comments as required
}
}
}
//Submit for verification and result calculation
WfForm.registerCheckEvent(WfForm.OPER_SUBMIT, function(callback){
var fieldvalue1 = WfForm.getFieldValue(fieldid1);//Get percentage
var fieldvalue2 = WfForm.getFieldValue(fieldid2);//Get vote person
if(fieldvalue1==null || fieldvalue1==""){
alert("Please contact admin to set pass rate!")
}else{
var rowArr = WfForm.getDetailAllRowIndexStr("detail_"+mx).split(",");//Check details table
var coun=rowArr.length;
var countfieldid5=0;
var check=false;
for(var i=0; i<rowArr.length; i++){
var rowIndex = rowArr[i];
if(rowIndex !== ""){
var fieldMark = "field111_"+rowIndex; //Check details table
var fieldvalue4=WfForm.getFieldValue(fieldid4+"_"+rowIndex);//Get vote person value
var fieldvalue5=WfForm.getFieldValue(fieldid5+"_"+rowIndex);//Get vote comments
if(fieldvalue5=="0"){
countfieldid5=parseInt(countfieldid5)+parseInt("1");
}
if(fieldvalue4==fieldvalue2 && fieldvalue5=="1"){
check=true;
}
}
var tgl=(countfieldid5*1.00)/(coun*1.00);
// console.log(countfieldid5)
// console.log(coun)
// console.log(tgl)
var checktgl=false;
if(tgl>=fieldvalue1){//Vote rate > Pass rate
checktgl=true;
}
if(!check && checktgl){
WfForm.changeFieldValue(fieldid3, {value:"0"});//Vote passed
}else{
WfForm.changeFieldValue(fieldid3, {value:"1"});//Vote failed
}
}
}
callback();
});
3 Simulate the click action to show workflow chart
var baseFrame = $(window.parent.document).find(".tab_menu");
baseFrame.children().eq(1).children().eq(0).click(); //Show workflow chart
$(window.parent.document).find("#divWfPic").hide(); //Hide workflow chart
$(window.parent.document).find("#divWfBill").show();
///Set the workflow chart image field id as overflowPic
$(document).ready(function(){
//Becuase take some time to generate the workflow chart, then need to extend the time
setTimeout(function(){
//find canvas
var pic = $(window.parent.document.getElementById("piciframe")).contents().find("#mainArea");
//generate the image
var _img = document.createElement("img");
_img.src = pic[0].toDataURL("image/png");
$('#overflowPic').append(_img);
}, 500);
});
4 Add placeholder
jQuery(document).ready(function(){
$("#field6387").attr("placeholder", "Please fill in counterparties");
});
5 Change tips text base on dropdown
/// If the dropdown is 0, then hide tips
/// If the dropdown is 1, then change tips text as [Note: This is a testing tips, please double check]
/// Note: need to set the tips region class as promptText
jQuery(document).ready(function(){
var _selectId = "field8581";
if($("#" + _selectId).val() == 0){
$(".promptText").parents("tr").eq(0).hide();
} else {
$(".promptText").text("[Note: This is a testing tips, please double check]");
}
});
6 Check mobile phone number
jQuery(document).ready(function(){
checkCustomize = function(){
var isPhone = /^([0-9]{3,4}-)?[0-9]{7,8}$/;//Chinese Mobile Phone Number
var isMob= /^0?1[3|4|5|8][0-9]\d{8}$/;// Chinese Telephone Number
var isSingaporeNumber = /^\+65(6|8|9)\d{7}$/;
var _val = $("#field7915").val();
if(_val == "") return true;
else if(isMob.test(_val) || isPhone.test(_val) || isSingaporeNumber(_val)) return true;
else {
alert("Please fill in the correct number");
return false;
}
};
});
7 Begin date should not later than End date
/* Begin date should not later than End date */
var beginTimeId = {id: "field7911", name: "Begin Date"}; //Begin Id
var endTimeId = {id: "field7912", name: "End Date"}; //End Id
$(document).ready(function(){
checkCustomize = checkChangeFunction; // Submit for check
$("#" + beginTimeId.id).bindPropertyChange(function(){ checkChangeFunction(); });// Check begin date
$("#" + endTimeId.id).bindPropertyChange(checkChangeFunction); // Check end date
});
/// Check function
function checkChangeFunction(){
var beginTime = new Date($("#" + beginTimeId.id).val()); //Convert to date type
var endTime = new Date($("#" + endTimeId.id).val()); //Convert to date type
return (beginTime > endTime) ?
( alert(beginTimeId.name + " could not later than " + endTimeId.name), false ): ( true );
}
//---------------------------------------------------------------------------------------------------
/* Begin date should not later than End date */
var beginTimeId = {date: "field7911", time: "field8482"}; //Begin
var endTimeId = {date: "field7912", time: "field8483"}; //End
$(document).ready(function(){
checkCustomize = function (){
var beginTime = new Date($("#" + beginTimeId.date).val() + " " +$("#" + beginTimeId.time).val()); //Convert to date type
var endTime = new Date($("#" + endTimeId.date).val() + " " +$("#" + endTimeId.time).val()); //Convert to date type
return (beginTime > endTime) ?
( alert("Begin date should not later than end date"), false ): ( true );
}; // Submit for check
});
8 Confirm current time and submit
/* Confirm current time and submit */
/// Main table with time, provide two button, confirm current time and submit, Get current time
/// Make Confirm current time and submit class as changeButton, add user define attribite submitNow as true
/// Make Get current Time field class as changeButton
var needWriteDateId = "7912"; //Date ID
var needWriteTimeId = "8483"; //Time ID
$(".changeButton").click(function(){
//Change date value
var time = new Date();
$("#field" + needWriteDateId).val(getDateYMD(time));
$("#field" + needWriteDateId + "span").text(getDateYMD(time));
$("#field" + needWriteTimeId).val(getTimeHM(time));
$("#field" + needWriteTimeId + "span").text(getTimeHM(time));
//Trigger submit button
if($(this).attr("submitNow")){
setTimeout(function(){
parent.bodyiframe.doSubmitBack(this);
parent.hideRightClickMenu();
}, 1000);
}
});
///Convert _time as yyyy-mm-dd format
function getDateYMD(_time){
var year = _time.getFullYear();
var month = _time.getMonth()+1;
var date = _time.getDate();
return year + "-" + ((month < 10) ? ("0" + month): month) + "-" + ((date < 10) ? ("0" + date): date);
}
///Convert _time as hh:mm format
function getTimeHM(_time){
var hours = _time.getHours();
var minutes = _time.getMinutes();
return ((hours < 10) ? ("0" + hours): hours) + ":" + ((minutes < 10) ? ("0" + minutes): minutes);
}
9 Default to get a date
$(document).ready(function(){
var _oldId = "field8444";
var _newId = "field8464";
$("#" + _newId).val($("#" + _oldId).val());
$("#" + _newId + "span").text($("#" + _oldId + "span").text());
});
10 Time difference in hours
/* Time difference in hours */
var beginTimeId = "field8482"; //Begin Time Id
var beginDateId = "field7911"; //Begin Date Id
var endTimeId = "field8483"; //End Time Id
var endDateId = "field7912"; //End Date Id
$(document).ready(function(){
checkCustomize = function(){
var beginTime = new Date($("#" + beginTimeId).val() + " " + $("#" + beginDateId).val());
var endTime = new Date($("#" + endTimeId).val() + " " + $("#" + endDateId).val());
var differTime = endTime - beginTime; //Time difference in seconds
var days = Math.floor(differTime / (3600*1000)); //Time difference in hours
$("#field8170").val(days);
return true;
}
});
11 Update time per second
/* Update time per second */
$(document).ready(function(){
showtime();
setInterval("showtime()",1000);
});
function showtime() {
var date = new Date();
var _text = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
document.getElementById("field6321span").innerText = _text
document.getElementById("field6321").value = _text
}
12 Check whether time 1 is within time 2, change the reminder text
/* Check whether time 1 is within time 2, change the reminder text */
/// Note: change the tips reggion class as "prompText"
/// If time 1 is within time2, then hide the tips text
/// Else, change the tips text as [Note: Leave application date & time is different with real date & time]
jQuery(document).ready(function(){
var _beginDateId1 = "field8566", _beginDateId2 = "field8586";
var _beginTimeId1 = "field8567", _beginTimeId2 = "field8587";
var _endDateId1 = "field8568", _endDateId2 = "field8588";
var _endTimeId1 = "field8569", _endTimeId2 = "field8589";
var isError = checkDate($("#" + _beginDateId1).val(), $("#" + _beginDateId2).val(), $("#" + _beginTimeId1).val(), $("#" + _beginTimeId2).val(), $("#" + _endDateId1).val(), $("#" + _endDateId2).val(), $("#" + _endTimeId1).val(), $("#" + _endTimeId2).val());
if(!isError){
$(".promptText").parents("tr").eq(0).hide();
} else {
$(".promptText").text("[Note: Leave application date & time is different with real date & time]");
}
});
/// Check time 2 is within time 1
/// _beginDate1 _beginTime1 Time1 Begin Date & Time
/// _beginDate2 _beginTime2 Time2 Begin Date & Time
/// _endDate1 _endTime1 Time1 End Date & Time
/// _endDate2 _endTime2 Time1 End Date & Time
/// within the range, then return false, else return true
function checkDate(_beginDate1, _beginDate2, _beginTime1, _beginTime2, _endDate1, _endDate2, _endTime1, _endTime2){
console.log(_beginDate1, _beginDate2, _beginTime1, _beginTime2, _endDate1, _endDate2, _endTime1, _endTime2);
var isError = false;
//Check start time
if(_beginDate1 > _beginDate2) { isError = true;console.log(1); }
else if(_beginDate1 == _beginDate2){
if(_beginTime1 > _beginTime2) { isError = true;console.log(2); }
console.log(3);
}
//Check End time
if(_endDate1 < _endDate2) { isError = true; console.log(4); }
else if(_endDate1 == _endDate2){
if(_endTime1 < _endTime2) { isError = true; console.log(5); }
console.log(6);
}
return isError;
}
Last updated