User:Sergey kudryavtsev/ml strings.js

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/**************************************************** 
 * По мотивам User:TMg/currentDate.js
 ****************************************************/
/*
valueview.options.dataTypeId и valueview.options.dataValueType могут принимать следующие значения:
dataTypeId          dataValueType
"commonsMedia"      "string"
"globe-coordinate"  "globecoordinate"
"monolingualtext"   "monolingualtext"
"quantity"          "quantity"
"string"            "string"
"time"              "time"
"url"               "string"
"external-id"       "string"
"wikibase-item"     "wikibase-entityid"
"wikibase-property" "wikibase-entityid"
"math"              "string"

valueview.options.dataValueType принимает значения 'wikibase-entityid'/'monolingualtext'/'time'/'string'/'quantity'/'globecoordinate'
  value = {
    property:  'Pxxx',
    snaktype:  'value'/'novalue'/'somevalue',
    datavalue: depennding of datatype
  }
   // datavalue has common methods:
   getType()
   getValue()
   toJSON()
   getSortKey()
   equals()
   constructor()
   // datavalue of type wikibase-entityid:
   datavalue = {
     _serialization: "Qxxxxxx"
     // + function getSerialization()
   }
   // datavalue of type monolingualtext:
   datavalue = {
     _languageCode: 'en'/'de'/'ru' etc, 
     _text: 'some text'
     // + functions getLanguageCode(), getText()
   }
   // datavalue of type time:
   datavalue = {
     _time:   { ? },
     _options { ? },
     // + function getOption(), getYear(), getMonth(), getDay(), getHour(), getMinute(), getSecond(), _getTimestamp(), _setOption()
   }
options.disabled of type boolean
options.create of type object
options.expertStore of type object
options.parserStore of type object
options.htmlFormatter of type object
options.plaintextFormatter of type object
options.dataTypeId of type string
options.dataValueType of type string
options.value of type object
options.language of type string
options.vocabularyLookupApiUrl of type string
options.autoStartEditing of type boolean
options.parseDelay of type number
options.messageProvider of type object
options.contentLanguages of type object
*/
function dump(s_prefix, s_key, value)
{
  var s_type = typeof(value);
  var s_value = s_prefix + s_key + ': ';
  switch(s_type) {
    case 'number':
    case 'boolean':
      console.log(s_value + value.toString());
      break;
    case 'string':
      console.log(s_value + '"' + value + '"');
      break;
    case 'function':
      console.log(s_value + 'function () { ... }');
      break;
    case 'object':
      if (value == null) {
        console.log(s_value + 'null');
      } else if (s_prefix.length > 4)  {
        console.log(s_value + '{ ... }');
      } else {
        console.log(s_value + '{');
        for (key in value) {
          dump(s_prefix + '  ', key, value[key]);
        }
        console.log(s_prefix + '}');
      }
      break;
    default: // case 'undefined':
      console.log(s_value + 'undefined');
      break;
  }
}

function on_valueviewafterstartediting(event)
{
  var $valueview = $(event.target);
  var valueview = $valueview.data('valueview');
  var options = valueview.options;
  var expert = valueview.expert();
  //
//  var $snakview = $valueview.closest('.wikibase-snakview');
//  var snakview = $snakview.data('snakview');
//  var value = snakview.value();
//  var datavalue = value.datavalue; // value.datavalue is identical to options.value
  //
  // dump('  ', 'event', event);
  if (options.dataValueType !== 'monolingualtext' || options.value !== null) {
    return;
  }
  expert.$input.val("...");
  expert._languageSelector.$selector.val("ru");
  expert._viewNotifier.notify('change');
//  dump('  ', 'options.value', options.value);
//  dump('  ', 'expert', expert);
//  dump('  ', 'value.datavalue', value.datavalue);
}

$(document).ready(function () {
  $('.wikibase-statementgrouplistview').on('valueviewafterstartediting', on_valueviewafterstartediting);
  console.log('on_valueviewafterstartediting() regerestred!');
});