|
29 | 29 |
|
30 | 30 | (function(){ |
31 | 31 | // APP VERSION/BUILD |
32 | | - var APP_VER = "1.0.0-beta"; |
33 | | - var APP_BLD = "20180114"; |
| 32 | + var APP_VER = "1.0.0"; |
| 33 | + var APP_BLD = "20180216"; |
34 | 34 | var SPRLIB_REQ = "1.4.0+"; |
35 | 35 | var DEBUG = false; // (verbose mode/lots of logging) |
36 | 36 | // APP MESSAGE STRINGS (Internationalization) |
|
163 | 163 | ================================================================================================== |
164 | 164 | */ |
165 | 165 |
|
166 | | - // TODO: Unimplemented/undocumented/undemoed |
| 166 | + // TODO: Unimplemented/undocumented/undemoed... need to: Validate/Update/Document |
167 | 167 | function doParseFormIntoJson(inModel, inEleId) { |
168 | | - // TODO: Validate/Update/Document for post-1.0.0 |
169 | 168 | var objReturn = { |
170 | 169 | jsonSpData: {}, |
171 | 170 | jsonFormat: {} |
|
195 | 194 | var dataName = ( inModel.listCols[strCol] ? inModel.listCols[strCol].dataName : strCol ); |
196 | 195 |
|
197 | 196 | // C: Handle various element types |
198 | | - // TODO: add new HTML5 tags |
199 | | - |
200 | | - // CASE: <checkbox> |
201 | | - if ( $(this).is(':checkbox') ) { |
202 | | - objReturn.jsonSpData[dataName] = $(this).prop('checked'); |
203 | | - objReturn.jsonFormat[strCol] = APP_STRINGS[APP_OPTS.language][$(this).prop('checked').toString()]; |
204 | | - } |
205 | | - // CASE: <jquery-ui datepicker> |
206 | | - else if ( $(this).val() && $(this).hasClass('hasDatepicker') ) { |
207 | | - objReturn.jsonSpData[dataName] = $(this).datepicker('getDate').toISOString(); |
208 | | - objReturn.jsonFormat[strCol] = ( inModel.listCols[strCol].dateFormat ? bdeLib.localDateStrFromSP(null,$(this).datepicker('getDate'),inModel.listCols[strCol].dateFormat) : $(this).datepicker('getDate').toISOString() ); |
209 | | - } |
210 | | - // CASE: <select:single> |
211 | | - else if ( $(this).val() && $(this).prop('type') == 'select-one' ) { |
212 | | - objReturn.jsonSpData[dataName] = ($(this).data('type') && ($(this).data('type') == 'num' || $(this).data('type') == 'pct')) ? Number($(this).val()) : $(this).val().toString(); |
213 | | - objReturn.jsonFormat[strCol] = objReturn.jsonSpData[dataName]; |
214 | | - } |
215 | | - // CASE: <select:multiple> |
216 | | - else if ( $(this).val() && $(this).prop('type') == 'select-multiple' ) { |
217 | | - // TODO: This is for multi-lookup! Multi-choice w/b different - add code! |
218 | | - // EX: (SP2013/16): { "SkillsId": { "__metadata":{"type":"Collection(Edm.Int32)"}, "results":[1,2,3] } } |
219 | | - var arrIds = []; |
220 | | - $.each($(this).val(), function(i,val){ arrIds.push( Number(val) ); }); |
221 | | - objReturn.jsonSpData[dataName] = { "__metadata":{"type":"Collection(Edm.Int32)"}, "results":arrIds }; |
222 | | - objReturn.jsonFormat[strCol] = arrIds.toString(); |
223 | | - } |
224 | | - // CASE: <radiobutton> |
225 | | - else if ( $(this).val() && $(this).is(':radio') ) { |
226 | | - // TODO: FUTURE: Add radiobutton, get value by name or whatever |
227 | | - } |
228 | | - // CASE: <textarea> |
229 | | - else if ( $(this).text() && $(this).prop('tagName').toUpperCase() == 'TEXTAREA' ) { |
230 | | - objReturn.jsonSpData[dataName] = $(this).text(); |
231 | | - objReturn.jsonFormat[strCol] = $(this).text(); |
232 | | - } |
233 | | - // CASE: (everything else - excluding buttons) |
234 | | - else if ( $(this).val() && $(this).prop('type') != 'submit' && $(this).prop('type') != 'reset' && $(this).prop('type') != 'button' ) { |
235 | | - objReturn.jsonSpData[dataName] = $(this).val(); |
236 | | - objReturn.jsonFormat[strCol] = $(this).val(); |
237 | | - } |
238 | | - // CASE: No value |
239 | | - else { |
240 | | - objReturn.jsonFormat[strCol] = ''; |
| 197 | + { |
| 198 | + // CASE: <checkbox> |
| 199 | + if ( $(this).is(':checkbox') ) { |
| 200 | + objReturn.jsonSpData[dataName] = $(this).prop('checked'); |
| 201 | + objReturn.jsonFormat[strCol] = APP_STRINGS[APP_OPTS.language][$(this).prop('checked').toString()]; |
| 202 | + } |
| 203 | + // CASE: <jquery-ui datepicker> |
| 204 | + else if ( $(this).val() && $(this).hasClass('hasDatepicker') ) { |
| 205 | + objReturn.jsonSpData[dataName] = $(this).datepicker('getDate').toISOString(); |
| 206 | + objReturn.jsonFormat[strCol] = ( inModel.listCols[strCol].dateFormat ? bdeLib.localDateStrFromSP(null,$(this).datepicker('getDate'),inModel.listCols[strCol].dateFormat) : $(this).datepicker('getDate').toISOString() ); |
| 207 | + } |
| 208 | + // CASE: <select:single> |
| 209 | + else if ( $(this).val() && $(this).prop('type') == 'select-one' ) { |
| 210 | + objReturn.jsonSpData[dataName] = ($(this).data('type') && ($(this).data('type') == 'num' || $(this).data('type') == 'pct')) ? Number($(this).val()) : $(this).val().toString(); |
| 211 | + objReturn.jsonFormat[strCol] = objReturn.jsonSpData[dataName]; |
| 212 | + } |
| 213 | + // CASE: <select:multiple> |
| 214 | + else if ( $(this).val() && $(this).prop('type') == 'select-multiple' ) { |
| 215 | + // TODO: This is for multi-lookup! Multi-choice w/b different - add code! |
| 216 | + // EX: (SP2013/16): { "SkillsId": { "__metadata":{"type":"Collection(Edm.Int32)"}, "results":[1,2,3] } } |
| 217 | + var arrIds = []; |
| 218 | + $.each($(this).val(), function(i,val){ arrIds.push( Number(val) ); }); |
| 219 | + objReturn.jsonSpData[dataName] = { "__metadata":{"type":"Collection(Edm.Int32)"}, "results":arrIds }; |
| 220 | + objReturn.jsonFormat[strCol] = arrIds.toString(); |
| 221 | + } |
| 222 | + // CASE: <radiobutton> |
| 223 | + else if ( $(this).val() && $(this).is(':radio') ) { |
| 224 | + // TODO: FUTURE: Add radiobutton, get value by name or whatever |
| 225 | + } |
| 226 | + // CASE: <textarea> |
| 227 | + else if ( $(this).text() && $(this).prop('tagName').toUpperCase() == 'TEXTAREA' ) { |
| 228 | + objReturn.jsonSpData[dataName] = $(this).text(); |
| 229 | + objReturn.jsonFormat[strCol] = $(this).text(); |
| 230 | + } |
| 231 | + // CASE: (everything else - excluding buttons) |
| 232 | + else if ( $(this).val() && $(this).prop('type') != 'submit' && $(this).prop('type') != 'reset' && $(this).prop('type') != 'button' ) { |
| 233 | + objReturn.jsonSpData[dataName] = $(this).val(); |
| 234 | + objReturn.jsonFormat[strCol] = $(this).val(); |
| 235 | + } |
| 236 | + // CASE: No value |
| 237 | + else { |
| 238 | + objReturn.jsonFormat[strCol] = ''; |
| 239 | + } |
241 | 240 | } |
242 | 241 |
|
243 | 242 | // D: Special Cases: |
|
327 | 326 | } |
328 | 327 | }); |
329 | 328 | } |
330 | | - |
331 | | - // 2: If a column is in a [select] text/value, then add it to cols! |
332 | | - if ( objTagData.text && objTagData.cols.indexOf(objTagData.text) == -1 ) arrColNames.push(objTagData.text); |
333 | | - if ( objTagData.value && objTagData.cols.indexOf(objTagData.value) == -1 ) arrColNames.push(objTagData.value); |
334 | 329 | } |
| 330 | + // If a column is in a [select] text/value, then those 2 are the query cols |
| 331 | + if ( objTagData.text ) arrColNames.push(objTagData.text); |
| 332 | + if ( objTagData.value ) arrColNames.push(objTagData.value); |
335 | 333 |
|
336 | 334 | if ( objTagData.filter ) { |
337 | 335 | // A: Param Check (NOTE: Dont use "!$(tag).filter.val" as actual value may be [false] or ""!) |
|
369 | 367 | } |
370 | 368 |
|
371 | 369 | $.each(objTagData.data, function(i,data){ |
| 370 | + console.log(data); |
372 | 371 | $(tag).append('<option value="'+ data[objTagData.value] +'">'+ data[objTagData.text] +'</option>'); |
373 | 372 | }); |
374 | 373 | } |
|
493 | 492 | + strErr +'</td></tr>' |
494 | 493 | ); |
495 | 494 | } |
496 | | - // TODO: show error in tag |
| 495 | + // TODO: show error in tags other than table |
497 | 496 | console.error(strErr); |
498 | 497 | }); |
499 | 498 | }); |
|
0 commit comments